package main

import "fmt"

/*
一个接口的值（简称接口值）是由一个具体类型和具体类型的值两部分组成的。这两部分分别称为接口的动态类型和动态值。
想要判断空接口中的值这个时候就可以使用类型断言，其语法格式：
x.(T)
其中：
x：表示类型为interface{}的变量
T：表示断言x可能是的类型。
该语法返回两个参数，第一个参数是x转化为T类型后的变量，第二个值是一个布尔值，若为true则表示断言成功，为false则表示断言失败。
举个例子：
*/
func justifyType(x interface{}) {
	switch v := x.(type) {
	case string:
		fmt.Printf("x is a string类型，value is %v\n", v)
	case int:
		fmt.Printf("x is a int类型, value is %v\n", v)
	case bool:
		fmt.Printf("x is a bool类型,value is %v\n", v)
	default:
		fmt.Println("unsupport type！")
	}
}

func main() {
	justifyType(12)
	justifyType(true)
	justifyType("hi,yuan!")
}
